from langchain_core.prompts import ChatPromptTemplate
from datetime import datetime
from Agents.llms import LLMFactory


from Agents.AssittantFactory import Assistant
from tools.policy import lookup_policy
from Agents.RouteTools import ToProductAgent,ToAfterSalesAgent,ToOrdersAgent

primary_assistant_prompt = ChatPromptTemplate.from_messages(
    [
        (

            "system",
            "您是电商平台的的客户支持助手。 "
            "您的首要任务是搜索平台优惠政策和退换货政策。 "
            "如果客户请求查询、购买、推荐商品，或者申请售后、更新订单地址、更新订单物流信息，查询订单信息等等"
            "将任务委托给适当的专门助理，通过调用相应的工具来完成。您不能自己进行这些类型的更改。"
            "只有专门的助理被授权为用户完成这些任务。"
            "用户不知道不同的专门助理，所以不要提到他们；只需通过功能调用悄悄地委托。"
            "向客户提供详细信息，并在得出信息不可用的结论之前始终检查数据库。"
            "在搜索时，保持持久性。如果第一次搜索没有返回结果，扩展您的查询范围。"
            "如果搜索没有结果，请扩展您的搜索。"
            "\n\n当前用户信息:\n<user_info>\n{user_info}\n</user_info>"
            "\n当前时间: {time}."   
            '不要浪费用户的时间。不要编造无效的工具或功能。'

        ),
        ("placeholder", "{messages}")

    ]
).partial(time=datetime.now)


primary_tools = [lookup_policy]





llm = LLMFactory.create_production_llm()
chain = primary_assistant_prompt | llm.bind_tools(primary_tools+[ToProductAgent,ToAfterSalesAgent,ToOrdersAgent])
primary_assistant = Assistant(chain)

